Data communication in a computer network involves the exchange of data between two or more entities interconnected by communication links and subnetworks. A local area network (LAN) is an example of a subnetwork that provides relatively short-distance communication among the interconnected stations. In contrast, a wide area network (WAN) facilitates long-distance communication over links provided by public or private telecommunications facilities. The entities are typically software programs executing on hardware computer platforms which, depending on their roles within the network, may serve as end stations or intermediate stations. Examples of intermediate stations include routers, bridges and switches that interconnect communication links and subnetworks, whereas an end station may be a computer located on one of the subnetworks. More generally, an end station connotes a source of or target for data that typically does not provide routing or other services to other computers on the network.
End stations typically communicate by exchanging discrete packets or frames of data according to predefined protocols. In this context, a protocol represents a set of rules defining how the stations interact with each other to transfer data. The traffic flowing into a network device—e.g., a router, switch, bridge, server, and the like—is generally made up of multiple abstraction layers (e.g., the Open Systems Interconnection (OSI) model). Each of these logical layers generally relates to communications functions of a similar nature. For instance, layer 2 of the OSI model is known as the data link layer and uses physical addressing (e.g., Media Access Control (MAC) addresses) for switching traffic. Layer 2 encapsulation generally provides the mechanism for transferring data between network entities, and can also be used for error correction for layer 1. As another example, layer 3 traffic is known as network layer traffic and uses logical addressing (e.g., Internet Protocol (IP) addresses) for routing traffic. Layer 3 encapsulation generally provides the mechanism for transmitting data between a source host on a first network to a destination host located on a second network.
One disadvantage of traditional Ethernet communications is that the arbitration between competing nodes that wish to transmit on the shared network at a given moment in time is inherently non-deterministic. That is, since only one node can transmit across a medium at a moment in time, a node's transmissions across a particular medium may be delayed in the event that another node is currently transmitting on the particular medium. Moreover, in the event that two nodes transmit at the same time, the nodes may sense a collision and retransmitting their data after some length of time. Furthermore, in the event that multiple network devices are joined using a network switch, additional sources of delay can be introduced as the switch buffers messages to a particular destination that would otherwise result in a collision. Such buffering introduces further delay that varies based on the network load.
In order to address such concerns, each node within the network can be configured with a respective synchronized clock for use in coordinating the transmission of data packets across the nodes. The general use of such synchronized clocks can overcome some problems of coordinating control actions between separated components in the deterministic Ethernet network. For example, a time stamp could be inserted into I/O messages and the messages, upon arriving at their destination, could be re-ordered in chronological order based on the inserted time stamps. As another example, time stamps could be included within output messages and, upon arriving at their destination, the output messages could be executed in chronological order based on the included time stamps, thereby making the output messages somewhat indifferent to network delay. However, large variation in network delay associated with non-deterministic networks such as Ethernet networks can prevent accurate clock synchronization across the various nodes on the network and may lead to other disadvantages such as increased jitter.